iT邦幫忙

2025 iThome 鐵人賽

DAY 21
0
Modern Web

AI 驅動的 Web 資安新時代系列 第 21

Day21 - AI Agent 產生安全報告:從技術到管理摘要

  • 分享至 

  • xImage
  •  

為什麼需要 AI 自動化安全報告?

傳統的安全檢測與弱點掃描,輸出結果往往充滿技術細節:

  • 大量的 CVE 編號、攻擊 Payload、CVSS 分數
  • 需要專業人員解讀才能轉換成修補建議
  • 管理階層往往難以理解風險優先順序

AI Agent 可以同時滿足 技術人員管理者 的需求:

  • 對技術人員:產出詳細的技術報告(CVE、Payload、修補建議)。
  • 對管理者:自動濃縮成一頁摘要(高風險系統、修補優先順序、合規影響)。

AI Agent 工作流程

  1. 收集掃描結果
    • 來源可能是弱點掃描器(如 Nmap、Nessus、OpenVAS)或自動紅隊 Agent。
    • 格式包含 CVE、影響範圍、測試結果。
  2. 技術層級報告
    • 詳細列出:漏洞描述、攻擊範例、風險評分(CVSS)、修補建議。
    • 適合資安工程師與開發者。
  3. AI 自動摘要
    • 透過 LLM(如 Gemini、GPT-4)產生「管理層易懂摘要」:
      • 風險排序:依 CVSS 與實際攻擊可行性排序
      • 業務影響:如「金流 API 受影響 → 可能造成金錢損失」
      • 合規影響:是否涉及 GDPR、ISO 27001、金融資安規範
    • 表格或一頁簡報 呈現
  4. 輸出格式
    • 技術報告 → PDF / Markdown,提供完整細節
    • 管理摘要 → 簡報風格、儀表板化(Top 5 漏洞、修補進度、影響範圍)

Server - 提供掃描結果的 API

  • 使用 express 建立一個非常輕量的本地測試 API。
  • 這個 endpoint /api/scan/result 回傳模擬的弱點掃描結果陣列(每筆包含 cve, desc, cvss, system, poc),方便本地 Agent 或測試腳本抓取並產生報告。
import express from "express";
const app = express();

app.get("/api/scan/result", (req, res) => {
   res.json([
      {
         cve: "CVE-2025-12345",
         desc: "Apache Struts Remote Code Execution",
         cvss: 9.8,
         system: "支付系統 API 伺服器",
         poc: "POST /api/payment {payload...}"
      },
      {
         cve: "CVE-2024-56789",
         desc: "弱 TLS 配置",
         cvss: 6.5,
         system: "後台管理系統",
         poc: "SSL Labs 測試報告"
      }
   ]);
});

app.listen(3000, () => console.log("伺服器啟動中:http://localhost:3000"));

Agent - 產生 AI 安全報告

1. 載入套件與環境變數

這裡載入 node-fetch 用來呼叫 API,dotenv 用來讀取 .env 裡的金鑰,並初始化 Gemini API client。

import fetch from "node-fetch";         // 發送 HTTP 請求
import dotenv from "dotenv";            // 載入 .env 檔案
import { GoogleGenerativeAI } from "@google/generative-ai"; // Google Gemini SDK

dotenv.config();                        // 啟用 .env 環境變數

2. 初始化 Gemini 模型

.env 讀取金鑰,並建立模型實例。

這裡示範使用 gemini-2.5-flash(速度快、成本低),若要更精準可改成 gemini-2.5-pro

const API_KEY = process.env.GEMINI_API_KEY;

const genAI = new GoogleGenerativeAI(API_KEY);

// 建立模型物件
const model = genAI.getGenerativeModel({ model: "gemini-2.5-flash" });

3. 定義主要函式 generateReport

流程:

  1. 透過 fetch 取得本地 API /api/scan/result 的掃描結果。
  2. 組合 Prompt,要求 AI 生成 技術報告管理摘要
async function generateReport() {
   // 向本地伺服器拿掃描結果
   const res = await fetch("http://localhost:3000/api/scan/result");
   const vulns = await res.json();

   // 組合 Prompt,請求模型同時輸出技術與管理報告
   const prompt = `
   以下是掃描結果,請輸出兩種報告:
   1. 技術報告:列出漏洞細節(CVE、描述、CVSS、PoC、修補建議)。
   2. 管理摘要:用表格呈現 Top 風險、受影響系統、修補優先度、業務影響。

   掃描結果:
   ${JSON.stringify(vulns, null, 2)}
   `;

4. 呼叫 Gemini 並輸出結果

利用 model.generateContent() 呼叫 LLM,並將結果印出。若發生錯誤則會捕捉並顯示錯誤訊息。

   try {
      const result = await model.generateContent(prompt);
      console.log("=== AI 報告 ===");
      console.log(result.response.text());   // 印出 AI 產生的報告
   } catch (err) {
      console.error("產生報告失敗:", err.message);
   }
}

5. 執行程式

最後呼叫函式 generateReport(),啟動整個流程。

generateReport();

Day22 - AI 日誌事件分析(Log Analyzer Agent)


上一篇
Day20 - Agent × RAG:即時查詢最新 CVE 與 Exploit POC
下一篇
Day22 - AI 日誌事件分析(Log Analyzer Agent)
系列文
AI 驅動的 Web 資安新時代22
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言